package com.ftg.learn.mybatis.chapter2.service;

import com.ftg.learn.mybatis.chapter2.entity.Sale;
import com.ftg.learn.mybatis.chapter2.util.ResultBean;
import com.ftg.learn.mybatis.chapter2.vo.SaleDetail;

import java.util.List;

/**
 * 商品的接口类,用来定义商品表的常见操作
 * @author kangjx
 * @date 2022-10-11
 */
public interface ISale {

    /**
     * 根据传递的商品信息完成商品表的添加
     * @param sale 商品信息
     * @return 1 代表成功  0  代表成功，但是没有添加任何数据
     *  当修改的商品主键，存在会抛出 runtimeexception
     */
    int save(Sale sale);

    /**
     * 根据传递的商品信息完成商品表的修改操作
     * @param sale 商品信息
     * @return int 1 代表成功 0  代表成功，但是没有修改任何数据
     *   当修改的商品主键，不存在会抛出 runtimeexception
     */
    int modify(Sale sale);

    /**
     * 用来根据商品主键进行查一操作
     * @param id  主键
     * @return sale 商品信息
     *     Integer id  主键
     *     String name 名称
     *     String address 地址
     *     Integer fid 农场编号
     *     String unit 单位
     *     BigDecimal price 价格
     *     String type     类型
     *     String scdate   生产时间
     *     String ccdate   售卖时间
     */
    Sale findOneSale(Integer id);

    /**
     * 按照主键删除一条商品（逻辑删除）
     * @param id  主键
     * @return  1 逻辑删除一条
     *          0 当前商品不存在
     */
    int deleteLogic(Integer id);

    /**
     * 按照商品编号来查询商品明细
     * @param id  主键
     * @return  List<SaleDetail>
     */
    List<SaleDetail> showDetailWithId(Integer id);

    /**
     * 分页功能
     * @param page  当前页码
     * @param limit 显示条数
     * @return ResultBean
     */
    ResultBean<SaleDetail> page(long page,long limit);

}
